package nan.Hash_Tree;

import java.util.HashMap;
import java.util.Map;

public class TestMap {
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<>();
        //1.使用put方法插入键值对
        //Map内部的元素之间的先后顺序和插入顺序关系不大
        //put的时候发现key已经存在，此时就会覆盖原有的
        map.put("及时雨", "宋江");
        map.put("黑旋风", "李逵");
        map.put("行者", "武松");
        map.put("及时雨", "宋公明");
        map.put("0709", "lsn");
        System.out.println(map);
        //2.使用get方法，根据key获取value
        //如果key不存在，get返回null
        //还可以使用getOrDefault来根据key获取value
        //如果key不存在，getOrDefault返回一个默认值
        String val = map.get("行者");
        System.out.println(map.getOrDefault("0709", "nnn"));
        System.out.println(val);
        //3.使用isEmpty判定空
        System.out.println(map.isEmpty());
        //4.使用size获取到键值对的个数
        System.out.println(map.size());
        //5.使用clear清空所有的键值对
        map.clear();
        System.out.println(map.isEmpty());
        //6.遍历Map（Map设计出来不是为了遍历），遍历是比较复杂的,要把map转为set
        for (Map.Entry<String, String> entry : map.entrySet()) {//把map这样的键值对结构进行了转换，
            // 转换为Set，Set里面的每个元素都是一个Entry，每个entry里面包含了key和value
            //entry此处表示条目
            System.out.println(entry.getKey() + ":" + entry.getValue());
        }
        //7.还可以单独获取到所有的key和所有的value
        for (String key : map.keySet()) {
            System.out.println(key);
        }
        for (String value : map.values()) {
            System.out.println(value);
        }
    }
}
